package com.cac.demo.newCode.cemop.service;

import com.alibaba.fastjson.JSONObject;
import com.cac.demo.newCode.cemop.dto.*;
import com.cac.demo.util.adapter.ResponseMsg;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.util.List;

public interface CemopService {
    /**
     * CEMOP系统退库单接收或驳回通知101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getReturnOrderData(JSONObject jsonObject);

    /**
     * CEMOP系统出库台账通知101库存
     * @param jsonObject
     * @return
     */

    ResponseMsg<Object> getOutboundData(JSONObject jsonObject);
    /**
     * 101库存发起协调通知CEMOP系统
     *
     * @param cemopInitiateCoordinationDTO
     * @return
     */
    ResponseMsg<Object> sendInitiateCoordinationData(CemopInitiateCoordinationDTO cemopInitiateCoordinationDTO);

    /**
     * CEMOP系统协调归零申请通知101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getZeroApplicationData(JSONObject jsonObject);

    /**
     * 101库存协调归零通知CEMOP系统
     * @param cemopZeroCoordinationDTO
     * @return
     */
    ResponseMsg<Object> sendZeroCoordinationData(CemopZeroCoordinationDTO cemopZeroCoordinationDTO);

    /**
     * CEMOP系统扫码移交至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getScanTransfer(JSONObject jsonObject);

    /**
     *101库存AO配套台账通知CEMOP系统
     * @param cemopSupportingLedgerDTO
     * @return
     */
    ResponseMsg<Object> sendAoSupportingLedger(CemopSupportingLedgerDTO cemopSupportingLedgerDTO);

    /**
     *101库存AO取消配套台账通知CEMOP系统
     * @param cemopSupportingLedgerDTO
     * @return
     */
    ResponseMsg<Object> sendCancelAoSupportingLedger(CemopCancelSupportingLedgerDTO cemopSupportingLedgerDTO);

    /**
     * 101库存AO配套出库通知CEMOP系统
     * @param cemopAoMatchingOutboundDTO
     * @return
     */
    ResponseMsg<Object> sendAoMatchingOutbound(CemopAoMatchingOutboundDTO cemopAoMatchingOutboundDTO);

    /**
     * 101库存AO撤销出库通知CEMOP系统
     * @param cemopAoRevokesOutboundDTO
     * @return
     */
    ResponseMsg<Object> sendAoRevokesOutbound(CemopAoRevokesOutboundDTO cemopAoRevokesOutboundDTO);

    /**
     * 101库存AO配套移交通知CEMOP系统
     * @param cemopAoSupportingTransferDTO
     * @return
     */
    ResponseMsg<Object> sendAoSupportingTransfer(CemopAoSupportingTransferDTO cemopAoSupportingTransferDTO);


    /**
     * CEMOP系统分配台账信息通知101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getAllocateLedgerInformation(JSONObject jsonObject);
    /**
     * CEMOP系统台账出库通知101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getLedgerOutbound(JSONObject jsonObject);
    /**
     * CEMOP系统取消台账分配通知101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getCancelLedgerAllocation(JSONObject jsonObject);
    /**
     * CEMOP系统取消台账出库通知101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getCancelLedgerOutbound(JSONObject jsonObject);

    ResponseMsg<Object> getCancelDeliver(JSONObject jsonObject);

    /**
     * CEMOP系统工人驳回物料至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getReject(JSONObject jsonObject) throws FileNotFoundException;

    /**
     * CEMOP系统工人驳回物料至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> receivingMaterial(JSONObject jsonObject) throws FileNotFoundException;

    /**
     * 101库存发送配套信息至装配
     *
     * @return
     */
    ResponseMsg<Object> sendMatchBillInfo();

    /**
     * 101库存发送分拣信息至装配
     *
     * @return
     */
    ResponseMsg<Object> sendMatchSortingInfo(String matchInfoId);

    /**
     * 101库存配套物料信息至装配
     *
     * @return
     */
    ResponseMsg<Object> sendMaterialInfo(List<String> planIds);

    /**
     * 101库存撤销配送信息至装配
     *
     * @return
     */
    ResponseMsg<Object> sendCancelDeliveryInfo();

    /**
     * 装配系统工人二次配套物料至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> receiveSecondMatch(JSONObject jsonObject);

    /**
     * 装配系统扫码移交至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> receiveMaterialDelivery(JSONObject jsonObject);
    ResponseMsg<Object> shopMaterialDelivery(List<String> toolCodes);

    /**
     * 装配系统工人退库物料至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getWorkersReturnMaterials(JSONObject jsonObject) throws FileNotFoundException, ParseException;

    /**
     * 装配系统工人撤销移交物料至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getRevocationTransfer(JSONObject jsonObject);

    /**
     * 装配系统工艺变更下发至101库存
     * @param jsonObject
     * @return
     */
    ResponseMsg<Object> getChangeProcess(JSONObject jsonObject) throws FileNotFoundException;

    /**
     * 存cemop日志
     * @param cemopLogDTO
     * @return
     */
    ResponseMsg<Object> saveCemopLog(CemopLogDTO cemopLogDTO);

    /**
     * 存本项目日志
     * @param cemopLogDTO
     * @return
     */
    ResponseMsg<Object> saveLocalLog(LocalLogDTO cemopLogDTO);


    ResponseMsg<Object> getLogPage(CemopLogDTO cemopLogDTO);

    ResponseMsg<Object> receiveSecondMatchAndReturn(JSONObject jsonObject) throws ParseException;

    /**
     * 101库存确认处理通知CEMOP系统
     * @return
     */
    ResponseMsg<Object> getStockConfirmation(CemopStockConfirmationDTO stockConfirmationDTO);




//    ResponseMsg<Object> sendAgreeReturnMaterials(JSONObject jsonObject) throws FileNotFoundException, ParseException;
//
//    ResponseMsg<Object> sendRejectReturnMaterials(JSONObject jsonObject);
//
//    ResponseMsg<Object> sendAgreeSecondMatch(MsSecondMatchInfo msSecondMatchInfo);
//
//    ResponseMsg<Object> sendRejectSecondMatch(MsSecondMatchInfo msSecondMatchInfo);

    ResponseMsg<Object> newCefcdEcd(JSONObject jsonObject);

    ResponseMsg<Object> getSortBackResultTxt(JSONObject jsonObject);

    ResponseMsg<Object> getSortBackResultXml(JSONObject jsonObject) throws FileNotFoundException;

    ResponseMsg<Object> sendSortBackResult(JSONObject jsonObject);
    ResponseMsg<Object> receiveAoChange(JSONObject jsonObject);
}

